package com.blue.blue2019;


/**
 * @auther zsj
 * @Date 2021/12/14
 * <p>
 * 试题 D: 质数
 * 本题总分：10 分
 * 【问题描述】
 * 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算
 * 第 2019 个质数是多少？
 * 质数是只能被自己本身或者1整除的数
 **/
public class DemoFour {
    //第一种方法
//    public static void main(String[] args) {
//        int n= 2019;
//        int i = 2, j = 1;
//        while (true) {
//            j = j + 1;
//            if (j > i / j) {
//                n--;
//                if (n == 0)
//                    break;
//                j = 1;
//            }
//            if (i % j == 0) {
//                i++;
//                j = 1;
//            }
//        }
//        System.out.println(i);
//    }

    /**
     * 思路，写一个方法去判断一个数是否为质数
     * 然后放入循环中，只要是质数，计数器加1，直到计数器为2019时，输出当前的数字即可
     *     17569
     */

    public void method(){
        int count = 0;
        for (int i = 2; i < 1000000; i++) {
            if (isPrime(i)){
                count++;
            }
            if (count ==2019){
                System.out.println(i);
                return;
            }
        }
    }

    public static boolean isPrime(int n){
        for (int i = 2; i < n; i++) {
            if (n % i == 0){
                //传进来的数如果能除于2的话,就不是质数
                return false;
            }
        }
        return true;
    }
}
